package Day_0222.Spring;

/**
 * @author zxc
 * @date 2023/02/22 16:43
 **/
public class SpringBean_LifeCycle {
    public static void main(String[] args) {
        /**
         * 谈一谈对于Spring bean生命周期的理解
         * ===》
         * 一.Spring Bean生命周期阶段
         * 要彻底搞清楚Spring的生命周期，首先要把这四个阶段牢牢记住。
         * 实例化和属性赋值对应构造方法和setter方法的注入，初始化和销毁是用户能自定义扩展的两个阶段。
         * 1. 实例化 Instantiation
         * 2. 属性赋值 Populate
         * 3. 初始化 Initialization
         * 4. 销毁 Destruction
         * ===》
         * Spring Bean的生命周期阶段 ：实例化 -> 属性赋值 -> 初始化 -> 销毁
         *
         * 二，Spring Bean各个生命周期阶段的工作
         * 1. 实例化，创建一个Bean对象
         * 2. 填充属性，为属性赋值
         * 3. 初始化
         * （1）如果实现了 xxxAware 接口，通过不同类型的Aware接口，拿到Spring容器的资源
         * （2）如果实现了BeanPostProcessor接口，
         *  则会回调该接口的postProcessBeforeInitialization 和 postProcessAfterInitialization 方法
         * （3）如果配置了 init-method 方法，则会执行 init-method 配置的方法
         * 5. 销毁
         * 6. 容器关闭后
         * （1）如果Bean实现了 DisposableBean 接口，则会回调该接口的 destroy 方法
         * （2）如果配置了 destroy-method 方法，则会执行 destroy-method 配置的方法
         *
         */
    }
}
